﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ClasesLibreria.dao;
using ClasesLibreria;
using ClasesLibreria.dominio;
using System.Configuration;

public partial class ABMEmpleados : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {
            Session["OrdenGrilla"] = "Legajo ASC";
            gvEmpleados.AllowSorting = true;

            // Llenado de la tabla con datos
            gvEmpleados.DataSource = DAOEmpleado.getAllEmpleados(Database.connectionString());
            gvEmpleados.DataBind();

            // Llenado de la lista de tipos de documentos
            lstTipoDocumento.DataSource = DAOTipoDocumento.queryTiposDocumentos(Database.connectionString());
            lstTipoDocumento.DataTextField = "nombre";
            lstTipoDocumento.DataValueField = "idTipoDocumento";
            lstTipoDocumento.DataBind();
            lstTipoDocumento.Items.Insert(0, new ListItem("Selecciones Tipo de Documento", string.Empty));

            // Llenado de la lista de Cargos
            lstCargos.DataSource = DAOCargo.queryCargos(Database.connectionString());
            lstCargos.DataTextField = "nombre";
            lstCargos.DataValueField = "idCargo";
            lstCargos.DataBind();
            lstCargos.Items.Insert(0, new ListItem("Selecciones Cargo", string.Empty));
        }
    }

    private void limpiarCargaEmpleado()
    {
        txtLegajo.Text = null;
        txtApellido.Text = null;
        txtNombre.Text = null;
        txtNumeroDocumento.Text = null;
        txtCalle.Text = null;
        txtCalleNumero.Text = null;
        txtPiso.Text = null;
        txtDepto.Text = null;
        txtTelefono.Text = null;
        lstTipoDocumento.SelectedIndex = 0;
        lstCargos.SelectedIndex = 0;

    }



    protected void gvEmpleados_SelectedIndexChanged(object sender, EventArgs e)
    {
        //Empleado empleado = DAOEmpleado.getById(int.Parse(gvEmpleados.SelectedRow.Cells[0].Text), Database.connectionString());
        Empleado empleado = DAOEmpleado.getById(int.Parse(gvEmpleados.DataKeys[gvEmpleados.SelectedRow.RowIndex].Value.ToString()), Database.connectionString());
        limpiarCargaEmpleado();

        txtLegajo.Text = empleado.Legajo.ToString();
        txtApellido.Text = empleado.Apellido;
        txtNombre.Text = empleado.Nombre;
        txtNumeroDocumento.Text = empleado.NumeroDocumento.ToString();
        txtCalle.Text = empleado.Calle;
        txtCalleNumero.Text = empleado.CalleNumero.ToString();
        txtPiso.Text = empleado.Piso;
        txtDepto.Text = empleado.Depto;
        txtTelefono.Text = empleado.Telefono;

        lstTipoDocumento.SelectedValue = empleado.TipoDocumento.Id.ToString();
        lstCargos.SelectedValue = empleado.Cargo.Id.ToString(); ;

        txtApellido.Focus();
    }

    protected void cmdCancelar_Click(object sender, EventArgs e)
    {
        limpiarCargaEmpleado();
    }

    protected void cmdGrabar_Click(object sender, EventArgs e)
    {
        Empleado emp = new Empleado();
        TipoDocumento tDoc = new TipoDocumento();
        Cargo cargo = new Cargo();

        tDoc = DAOTipoDocumento.getById(int.Parse(lstTipoDocumento.SelectedValue), Database.connectionString());
        cargo = DAOCargo.getById(int.Parse(lstCargos.SelectedValue), Database.connectionString());

        if (txtLegajo.Text != "")
        { emp.Legajo = int.Parse(txtLegajo.Text); }
        emp.Apellido = txtApellido.Text;
        emp.Nombre = txtNombre.Text;
        emp.TipoDocumento = tDoc;
        emp.NumeroDocumento = int.Parse(txtNumeroDocumento.Text);
        emp.Calle = txtCalle.Text;
        emp.CalleNumero = int.Parse(txtCalleNumero.Text);
        emp.Piso = txtPiso.Text;
        emp.Depto = txtDepto.Text;
        emp.Telefono = txtTelefono.Text;
        emp.Cargo = cargo;

        if (txtLegajo.Text == "")
        {
            DAOEmpleado.insertarEmpleado(emp, Database.connectionString());
        }
        else
        {
            DAOEmpleado.actualizaEmpleado(emp, Database.connectionString());
        }

        limpiarCargaEmpleado();
        gvEmpleados.DataSource = DAOEmpleado.getAllEmpleados(Database.connectionString());
        //gvEmpleados.DataSource = DAOEmpleado.queryEmpleados(Database.connectionString(), txtFiltroLegajo.Text, txtFiltroApellido.Text,
        //        Session["OrdenGrilla"].ToString());
        gvEmpleados.DataBind();

    }


    protected void gvEmpleados_Sorting(object sender, GridViewSortEventArgs e)
    {
        if (Session["OrderField"] == null)
        {
            Session["OrderField"] = e.SortExpression;
            Session["Order"] = "DESC";
        }
        string strOrder;
        if (Session["OrderField"].ToString() == e.SortExpression.ToString())
        {
            Session["OrderField"] = e.SortExpression;
            strOrder = e.SortExpression;
            if (Session["Order"].ToString() == "ASC")
            {
                strOrder = strOrder + " DESC";
                Session["Order"] = "DESC";
            }
            else
            {
                strOrder = strOrder + " ASC";
                Session["Order"] = "ASC";
            }
        }
        else
        {
            strOrder = e.SortExpression + " ASC";
            Session["OrderField"] = e.SortExpression;
            Session["Order"] = "ASC";
        }
        Session["OrdenGrilla"] = strOrder;
        gvEmpleados.DataSource = DAOEmpleado.queryEmpleados(Database.connectionString(), txtFiltroLegajo.Text, txtFiltroApellido.Text,
           Session["OrdenGrilla"].ToString());
        gvEmpleados.DataBind();
    }

    protected void cmdEliminar_Click(object sender, EventArgs e)
    {
        if (txtLegajo.Text != String.Empty)
        {
            Empleado emp = new Empleado();
            emp.Legajo = int.Parse(txtLegajo.Text);
            DAOEmpleado.borrarEmpleado(emp, ConfigurationManager.ConnectionStrings["Libreria"].ConnectionString);
            limpiarCargaEmpleado();
        }
    }

    protected void cmdNuevo_Click(object sender, EventArgs e)
    {
        limpiarCargaEmpleado();
        txtApellido.Focus();
    }

    protected void cmdConsultar_Click(object sender, EventArgs e)
    {
        gvEmpleados.DataSource = DAOEmpleado.queryEmpleados(Database.connectionString(), txtFiltroLegajo.Text, txtFiltroApellido.Text,
Session["OrdenGrilla"].ToString());
        gvEmpleados.DataBind();
    }

    protected void gvEmpleados_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvEmpleados.PageIndex = e.NewPageIndex;
    }

    protected void gvEmpleados_PageIndexChanged(object sender, EventArgs e)
    {
        GridViewPageEventArgs evt = (GridViewPageEventArgs)e;
        gvEmpleados.PageIndex = evt.NewPageIndex;
        //gvEmpleados.DataSource = DAOEmpleado.queryEmpleados(Database.connectionString(), txtFiltroLegajo.Text, txtFiltroApellido.Text,
        //    Session["OrdenGrilla"].ToString());
        //gvEmpleados.DataSource = DAOEmpleado.getAllEmpleados(Database.connectionString());
        gvEmpleados.DataBind();
    }
}